import UIKit

//
@available(iOS 10.0, *)
extension QKC where AA :UIViewPropertyAnimator {
     open func timingParameters_qk_g() -> QKC<AA,YY,ZZ, UITimingCurveProvider? >{
		 self +^ self.value.timingParameters
	}

    open func duration_qk_g() -> QKC<AA,YY,ZZ, TimeInterval >{
		 self +^ self.value.duration
	}

	/// Defaults to 0. This property is set when calling -[UIView startAnimationAfterDelay:].
    open func delay_qk_g() -> QKC<AA,YY,ZZ, TimeInterval >{
		 self +^ self.value.delay
	}

	/// Defaults to YES. Raises if set on an active animator.
    open func isUserInteractionEnabled_qk_s(_ isUserInteractionEnabled:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: isUserInteractionEnabled).then_QK { $0.value.isUserInteractionEnabled = isUserInteractionEnabled }
	}
    open func isUserInteractionEnabled_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.isUserInteractionEnabled
	}

	/// Defaults to NO. Set if you need to manage the the hittesting of animating view hierarchies
    open func isManualHitTestingEnabled_qk_s(_ isManualHitTestingEnabled:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: isManualHitTestingEnabled).then_QK { $0.value.isManualHitTestingEnabled = isManualHitTestingEnabled }
	}
    open func isManualHitTestingEnabled_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.isManualHitTestingEnabled
	}

	/// Defaults to YES. Raises if set on an active animator.
    open func isInterruptible_qk_s(_ isInterruptible:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: isInterruptible).then_QK { $0.value.isInterruptible = isInterruptible }
	}
    open func isInterruptible_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.isInterruptible
	}

	/// Defaults to YES. Provides the ability for an animator to pause and scrub either linearly or using the animator’s current timing.
    @available(iOS 11.0, *)
    open func scrubsLinearly_qk_s(_ scrubsLinearly:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: scrubsLinearly).then_QK { $0.value.scrubsLinearly = scrubsLinearly }
	}
    @available(iOS 11.0, *)
    open func scrubsLinearly_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.scrubsLinearly
	}

	/// Defaults to NO. Provides the ability for an animator to pause on completion instead of transitioning to the .inactive state.
    @available(iOS 11.0, *)
    open func pausesOnCompletion_qk_s(_ pausesOnCompletion:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: pausesOnCompletion).then_QK { $0.value.pausesOnCompletion = pausesOnCompletion }
	}
    @available(iOS 11.0, *)
    open func pausesOnCompletion_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.pausesOnCompletion
	}

	/// will be (1 - delayFactor) * animator.duration seconds.
    open func addAnimations_qk_f(_ animation: @escaping () -> Void, delayFactor: CGFloat) -> QKC<AA,YY,ZZ,Void>{
		 self +^ self.value.addAnimations(animation, delayFactor:delayFactor)
	}

	/// are no animation blocks, will start the animator in a transient paused state.
    open func addAnimations_qk_f(_ animation: @escaping () -> Void) -> QKC<AA,YY,ZZ,Void>{
		 self +^ self.value.addAnimations(animation)
	}

    open func addCompletion_qk_f(_ completion: @escaping (UIViewAnimatingPosition) -> Void) -> QKC<AA,YY,ZZ,Void>{
		 self +^ self.value.addCompletion(completion)
	}

	/// with a new duration and timing parameters.
    open func continueAnimation_qk_f(withTimingParameters parameters: UITimingCurveProvider?, durationFactor: CGFloat) -> QKC<AA,YY,ZZ, UITimingCurveProvider?>{
		 self +^ self.value.continueAnimation(withTimingParameters:parameters, durationFactor:durationFactor) +^ parameters
	}

}

